<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GrPPI: Generic Reusable Parallel Pattern Interface - GrPPI</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">GrPPI
   &#160;<span id="projectnumber">0.3.1</span>
   </div>
   <div id="projectbrief">Generic and Reusable Parallel Pattern Interface</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Generic Reusable Parallel Pattern Interface - GrPPI </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2>Introduction</h2>
<p><b>GrPPI</b> is an open source <em>generic and reusable parallel pattern programming interface</em> developed at University Carlos III of Madrid. Basically, <b>GrPPI</b> accommodates a layer between developers and existing parallel programming frameworks targeted to multi-core processors, such as ISO C++ Threads, OpenMP , Intel TBB, and FastFlow. To achieve this goal, the interface leverages modern C++ features, meta-programming concepts, and generic programming to act as switch between those frameworks.</p>
<p>Furthermore, its compact design facilitates the development of parallel applications, hiding away the complexity behind the use of concurrency mechanisms. The parallel patterns supported by GrPPI are targeted for both stream processing and data-intensive applications and can be composed among them to match more complex constructions. In a nutshell, <b>GrPPI</b> advocates for a usable, simple, generic, and high-level parallel pattern interface, allowing users to implement parallel applications without having a deep understanding of today's parallel programming frameworks and third-party interfaces.</p>
<p>Currently, <b>GrPPI</b> supports the following patterns:</p>
<ul>
<li>Data parallel patterns<ul>
<li><a class="el" href="map_8md.html">Map</a></li>
<li><a class="el" href="reduce_8md.html">Reduce</a></li>
<li><a class="el" href="map-reduce_8md.html">Map/Reduce</a></li>
<li><a class="el" href="stencil_8md.html">Stencil</a></li>
</ul>
</li>
<li>Task parallel patterns<ul>
<li><a class="el" href="divide-conquer_8md.html">Divide-and-conquer</a></li>
</ul>
</li>
<li>Streaming patterns<ul>
<li><a class="el" href="pipeline_8md.html">Pipeline</a></li>
<li><a class="el" href="farm_8md.html">Farm</a></li>
<li><a class="el" href="stream-filter_8md.html">Stream filter</a></li>
<li><a class="el" href="stream-reduce_8md.html">Stream reduction</a></li>
<li><a class="el" href="stream-iteration_8md.html">Stream iteration</a></li>
</ul>
</li>
</ul>
<p>Additionally, streaming patterns allow the use of <a class="el" href="context_8md.html">multi-context</a> execution, aiming to allow the combination of multiple back-ends for the execution of a single pipeline.</p>
<h2>Install and compile instructions</h2>
<p>See the <a class="el" href="install-notes_8md.html">install and compile notes</a>.</p>
<h2>Publications describing GrPPI</h2>
<h3>Overview publication</h3>
<p>Please cite this publication in any work using our library:</p>
<ul>
<li><b>A Generic Parallel Pattern Interface for Stream and Data Processing</b>. David del Rio, Manuel F. Dolz, Javier Fernández, J. Daniel García. <em>Concurrency and Computation: Practice and Experience</em>. ISSN: 1532-0634. DOI: <a href="http://dx.doi.org/10.1002/cpe.4175">10.1002/cpe.4175</a>.</li>
</ul>
<h3>Other references</h3>
<ul>
<li><b>A C++ Generic Parallel Pattern Interface for Stream Processing</b>. David Del Río Astorga, Manuel F. Dolz, Luis Miguel Sanchez, Javier Garcia Blas and J. Daniel Garcia. <em>16th International Conference on Algorithms and Architectures for Parallel Processing (ICA3PP)</em>. Granada, Spain. 14-16/12/2016. pp. 74-84. DOI: <a href="http://dx.doi.org/10.1007/978-3-319-49583-5_5">10.1007/978-3-319-49583-5_5</a></li>
</ul>
<h3>Acknowledgments</h3>
<p>The <b>GrPPI</b> library has been partially supported by:</p>
<ul>
<li>Project ICT 644235 *"REPHRASE: REfactoring Parallel Heterogeneous Resource-aware Applications"* funded by the European Commission through H2020 program (2015-2018).</li>
<li>Project TIN2016-79673-P <em>“Towards Unification of HPC and Big Data Paradigms”</em> funded by the Spanish Ministry of Economy and Competitiveness (2016-2019). </li>
</ul>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
